package ace.module.account.api.model.dto;

import io.swagger.v3.oas.annotations.media.Schema;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import jakarta.validation.constraints.*;
import jakarta.annotation.Nullable;
import java.io.Serializable;

/**
* 账户个人资料 data transform object.
*
* @author Caspar
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Schema(title = IamAccountProfileDto.TABLE_DESC)
public class IamAccountProfileDto implements Serializable {

  public static final String TABLE_NAME = "iam_account_profile";
  public static final String TABLE_DESC = "账户个人资料";
  public static final String ID_COLUMN_NAME = "id";
  public static final String ID_TITLE = "id";
  public static final String ID_DESC = "";
  public static final String IAM_APP_ID_COLUMN_NAME = "iam_app_id";
  public static final String IAM_APP_ID_TITLE = "账户应用id";
  public static final String IAM_APP_ID_DESC = "";
  public static final String IAM_ACCOUNT_ID_COLUMN_NAME = "iam_account_id";
  public static final String IAM_ACCOUNT_ID_TITLE = "账户id";
  public static final String IAM_ACCOUNT_ID_DESC = "";
  public static final String NICK_NAME_COLUMN_NAME = "nick_name";
  public static final String NICK_NAME_TITLE = "昵称";
  public static final String NICK_NAME_DESC = "";
  public static final String REAL_NAME_COLUMN_NAME = "real_name";
  public static final String REAL_NAME_TITLE = "真实姓名";
  public static final String REAL_NAME_DESC = "";
  public static final String AVATAR_COLUMN_NAME = "avatar";
  public static final String AVATAR_TITLE = "头像";
  public static final String AVATAR_DESC = "";
  public static final String CONTACT_INFO_COLUMN_NAME = "contact_info";
  public static final String CONTACT_INFO_TITLE = "联系方式";
  public static final String CONTACT_INFO_DESC = "";
  public static final String SIGNATURE_COLUMN_NAME = "signature";
  public static final String SIGNATURE_TITLE = "个性签名";
  public static final String SIGNATURE_DESC = "";
  public static final String SEX_COLUMN_NAME = "sex";
  public static final String SEX_TITLE = "性别";
  public static final String SEX_DESC = " 1-未知 2-男性 3-女性";
  public static final String REGISTER_SOURCE_FROM_COLUMN_NAME = "register_source_from";
  public static final String REGISTER_SOURCE_FROM_TITLE = "注册来源";
  public static final String REGISTER_SOURCE_FROM_DESC = " 1-未知 2-电脑浏览器端 3-手机浏览器端 4-微信公众号 5-微信小程序 6-ios 7-android 8-管理后台";
  public static final String BIRTHDAY_COLUMN_NAME = "birthday";
  public static final String BIRTHDAY_TITLE = "生日时间";
  public static final String BIRTHDAY_DESC = "时间戳-毫秒";
  public static final String DELETE_FLAG_COLUMN_NAME = "delete_flag";
  public static final String DELETE_FLAG_TITLE = "删除标识";
  public static final String DELETE_FLAG_DESC = "0-未删除";
  public static final String CREATE_TIME_COLUMN_NAME = "create_time";
  public static final String CREATE_TIME_TITLE = "创建时间";
  public static final String CREATE_TIME_DESC = "单位-毫秒";
  public static final String UPDATE_TIME_COLUMN_NAME = "update_time";
  public static final String UPDATE_TIME_TITLE = "更新时间";
  public static final String UPDATE_TIME_DESC = "单位-毫秒";
  public static final String ROW_VERSION_COLUMN_NAME = "row_version";
  public static final String ROW_VERSION_TITLE = "版本号和乐观锁";
  public static final String ROW_VERSION_DESC = "";

  @Schema(title = ID_TITLE, description = ID_DESC)
  private Long id;

  @Schema(title = IAM_APP_ID_TITLE, description = IAM_APP_ID_DESC)
  private Long iamAppId;

  @Schema(title = IAM_ACCOUNT_ID_TITLE, description = IAM_ACCOUNT_ID_DESC)
  private Long iamAccountId;

  @Size(max = 255)
  @Schema(title = NICK_NAME_TITLE, description = NICK_NAME_DESC)
  private String nickName;

  @Size(max = 255)
  @Schema(title = REAL_NAME_TITLE, description = REAL_NAME_DESC)
  private String realName;

  @Size(max = 255)
  @Schema(title = AVATAR_TITLE, description = AVATAR_DESC)
  private String avatar;

  @Size(max = 255)
  @Schema(title = CONTACT_INFO_TITLE, description = CONTACT_INFO_DESC)
  private String contactInfo;

  @Size(max = 255)
  @Schema(title = SIGNATURE_TITLE, description = SIGNATURE_DESC)
  private String signature;

  @Schema(title = SEX_TITLE, description = SEX_DESC)
  private Integer sex;

  @Schema(title = REGISTER_SOURCE_FROM_TITLE, description = REGISTER_SOURCE_FROM_DESC)
  private Integer registerSourceFrom;

  @Schema(title = BIRTHDAY_TITLE, description = BIRTHDAY_DESC)
  private Long birthday;

  @Schema(title = DELETE_FLAG_TITLE, description = DELETE_FLAG_DESC)
  private Long deleteFlag;

  @Schema(title = CREATE_TIME_TITLE, description = CREATE_TIME_DESC)
  private Long createTime;

  @Schema(title = UPDATE_TIME_TITLE, description = UPDATE_TIME_DESC)
  private Long updateTime;

  @Schema(title = ROW_VERSION_TITLE, description = ROW_VERSION_DESC)
  private Long rowVersion;

}